A storage server is a special-purpose processing system used to store and retrieve data on behalf of one or more client processing systems (“clients”). A storage server can be used for many different purposes, such as, to provide multiple users with access to shared data or to backup mission critical data.
A file server is an example of a storage server. A file server operates on behalf of one or more clients to store and manage shared files in a set of mass storage devices, such as magnetic or optical storage based disks or tapes. The mass storage devices may be organized into one or more volumes of Redundant Array of Inexpensive Disks (RAID). Another example of a storage server is a device which provides clients with block-level access to stored data, rather than file-level access, or a device which provides clients with both file-level access and block-level access. A storage server may provide direct attached/network attached storage for a host platform that is logically partitioned. As described herein, network attached storage may refer to data access to a storage server over a network such as a storage area network (SAN.)
A virtual machine architecture logically partitions a physical machine, such that the underlying hardware of the machine is time-shared and appears as one or more independently operating virtual machines (VMs). A virtual machine monitor (VMM) creates the VM and runs on a computer to facilitate, for other software, the abstraction of one or more VMs. Each VM may function as a self-contained platform, running its own operating system (OS) and application software. The software running in a VM is collectively referred to herein as “guest software.” In addition, resources available within the VM may be referred to herein as “guest resources.”
The guest software expects to operate as if it were running on a dedicated computer rather than in a VM. That is, the guest software expects to control various events and have access to hardware resources on the host platform (e.g., physical machine) which maybe referred to herein as “host hardware resources.” The host hardware resources of the physical machine may include one or more processors, resources resident on the processors (e.g., control registers, caches and others), memory (instructions residing in memory, e.g., descriptor tables), and other resources (e.g., input/output devices, host attached storage, network attached storage or other like storage) that reside in the physical machine (“host platform”) or are coupled to the host platform such as a file/storage server. The events may include interrupts, exceptions, platform events (e.g., initialization) (INIT) or system management interrupts (SMIs), and the like.
Hence, a VMM presents to other software (“guest software,” “guests” or simply “guest”) the abstraction of one or more VMs. The VMM can provide the same or different abstractions to the various guests. Each guest expects the full facilities of the host platform presented in the VM to be available for its use. For example, the guest expects to have access to all registers, caches, structures, I/O devices, memory, direct attached storage, network attached storage and the like according to the architecture of the processor and platform presented in the VM.
However, when a storage server or a file server is part of a host platform, which is partitioned or subdivided to provide one or more “virtual execution environments,” such as VMs, hardware partitions or the like, the ability of guest software to access the storage server may be restricted within the virtual execution environment. In fact, unless the storage server/file server is accessible (virtualized) within the virtual execution environment, guest OS control over the storage server/file server is prohibited. As a result, access to host hardware resources that may be available from a data storage application when running within a non-virtualized host platform, may not be available when such application operates within a virtual execution environment such as a VM. For example, access to SAN commands of host network-attached storage may not be available within the virtual execution environment.